
// alert("这是一个警告框")

// // 写入HTML输出
// document.write("我们要显示见面")

// console.log("这是一个用于调试的函数（控制台）")

// var a = 12;
// var b = "hh";
// var c = 32.14;
// var d = false;
 
// alert(a);
// alert(b);
// alert(c);
// alert(d);

// var name;
// alert(typeof name);

//undefined 表示这个变量没有被初始化
// var age;
// alert(typeof age);

// 函数：就是一个功能（模块）
// 基本语法：
            // function 函数名(参数1，参数2...参数n){
            //     函数语句
            // }

// 需要调用函数： 函数名（）
// function box (){
//     alert("这是一个自定义函数")
// }
// 调用函数
// box();


// 有参数的函数
// function box1(a,b){
//     alert(a+b);
// }
// box1(1,2);


// 有参数有返回值
// function box2(a,b) {
//     return a+b;
// }
// 调用函数要将这个函数的返回值赋值给一个变量result
// var result = box2(1,2);
// alert(result);
// console.log(result);


// var x = function (){
//     alert("函数表达式");
// }
// x();

// var result = new Function('x','y','retutn x+y');
// 等同于
// function result(x,y){
//     return x+y;
// }

// var box = function(){
//     var a = 1;
//     return function(){
//         alert(a++);
//     }
//     //alert(a);永远不会被执行
// }
// alert(box());//只会输出return的函数
// //想要输出值 需要再接一下
// var new_function = box();
// new_function();

// 函数的自执行
// (function(name){
//     alert(name);
// })("tom");


// var box = (function(){
//     return "abc";
// })();
// console.log(box);
// 或者
// alert(box);


// 创建动态函数（构造函数）
// var x = new Function("x","y","var sum; sum=x+y;return sum;");
// alert(x(2,3));
//等价的
// function x(x,y){
//     var sum;
//     sum = x+y;
//     return sum;
// }
// alert(x(2,3));


//使用new创建Object对象
// var obj = new Object();
// obj.name = "fender";
// obj.age = 40;
// obj.fn = function(){
//     alert("这是一个自定义的函数");
// }

// alert(obj.name);
// alert(obj.age);
// obj.fn();

//使用字面量的方式创建对象的写法
// var obj1 = {
    // 属性
    // name:"tom123",
    // age:21,
    // 方法
//     eat:function(){
//         alert("吃饭......");
//     },
//     sleep:function(){
//         alert("睡觉......");
//     }
// };
// alert(obj1.name);
// alert(obj1.age);
// obj1.eat();
// obj1.sleep();



// 创建一个构造器
// function Person(name,age){
//     // this表示当前Person对象自身
//     this.name = name;
//     this.age = age;
//     this.eat = function(){
//         alert("eat......");
//     }
// }

// 使用prototype原型来向Person中添加一些属性和方法
// Person.prototype.type="人类";
// Person.prototype.study = function(){
//     alert("学习......")
// }

// Object.prototype.print = function(){
//     alert("print......")
// }

// var obj = new Object();
// obj.print();

// var person = new Person('tom',20);
// console.log(person.name);
// console.log(person.age);
// console.log(person.type);
// person.eat();
// person.study();

// var a = 1; //全局变量

// function x() {
//     var b = 12;
//    console.log(a)
// }
// alert(b);
// x();

// 不是在函数里 但也是在{}里写 还是能输出变量 是全局变量
// if(true) {
//     var x = 12;
// }
// console.log(x);


//与全局作用域相同，函数的作用域内部也会产生变量的提升的情况。
//使用var声明变量的时候，无论在什么地方，变量声明都会被提升到函数体的头部

function fun(x){
    if(x>100){
        var temp = x-1000;
    }
}
//等价于
function fun(x){
    var temp;
    if(x>100){
        temp = x-1000;
    }
}